// Author: wsfuyibing <682805@qq.com>
// Date: 2025-04-28

package kind

// GoodsUnit
// 商品单位.
type GoodsUnit int

const (
	_ GoodsUnit = iota

	GoodsUnitBottle GoodsUnit = 1 // 瓶
	GoodsUnitPacket GoodsUnit = 2 // 包
	GoodsUnitBag    GoodsUnit = 3 // 袋
	GoodsUnitPiece  GoodsUnit = 4 // 支
	GoodsUnitBox    GoodsUnit = 5 // 盒
	GoodsUnitCan    GoodsUnit = 6 // 盒

	GoodsUnitTicket GoodsUnit = 99 // 张
)

var (
	goodsUnitTexts = map[GoodsUnit]string{
		GoodsUnitBottle: "瓶",
		GoodsUnitPacket: "包",
		GoodsUnitBag:    "袋",
		GoodsUnitPiece:  "支",
		GoodsUnitBox:    "盒",
		GoodsUnitCan:    "罐",
		GoodsUnitTicket: "张",
	}
)

func GoodsUnitDict() []map[string]any {
	var res = make([]map[string]any, 0)
	for _, v := range []GoodsUnit{
		GoodsUnitBottle,
		GoodsUnitPacket,
		GoodsUnitBag,
		GoodsUnitPiece,
		GoodsUnitBox,
		GoodsUnitCan,
		GoodsUnitTicket,
	} {
		res = append(res, map[string]any{
			"Key":   v,
			"Value": v.Text(),
		})
	}
	return res
}

func (o GoodsUnit) Text() string {
	if str, ok := goodsUnitTexts[o]; ok {
		return str
	}
	return ""
}
